home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 140 / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin / tools / xpicw / xpicw110.lzh / WLSource / down2.s < prev    next >
Encoding:
Text File  |  1997-04-10  |  1.5 KB  |  109 lines

  1. *    down2.s
  2. *        下スクロールその2 / 最高速 = 5
  3. *            by Mitsuky
  4.  
  5.  
  6. SPEED_MAX    equ    5
  7.  
  8.     .offset    8        * 引き数
  9. _source_ptr:    .ds.l    1
  10. _dest_ptr:    .ds.l    1
  11. _speed:        .ds.l    1
  12. _vdisp:        .ds.l    1
  13.  
  14.  
  15.  
  16.     .text
  17.     .even
  18.  
  19.     .dc.b    'WL10',$0d,$0a
  20.     .dc.b    '下スクロールその2 / 最高速 = 5',$0d,$0a
  21.     .dc.b    '    by Mitsuky',$0d,$0a
  22.     .dc.b    $1a
  23.     .even
  24.  
  25. down2:
  26.     link    a6,#0
  27.     movem.l    d1-d7/a0-a5,-(sp)
  28.  
  29.     move.l    _speed(a6),d0    * d0.w =
  30.     bmi    down2_ask_speed
  31.     cmpi.l    #SPEED_MAX,d0
  32.     bhi    down2_err
  33.  
  34.     tst.l    _vdisp(a6)
  35.     bmi    down2_ask_vdisp
  36.  
  37.  
  38.  
  39.     moveq.l    #1,d5
  40.     lsl.w    d0,d5
  41.     move.l    #512,d7
  42.     add.w    d5,d7        * d7.l = スクロール座標
  43.     subq.w    #1,d5        * d5.w = V-SYNC 当たりのループ回数-1
  44.  
  45.     move.w    #512,d6
  46.     lsr.w    d0,d6
  47.     subq.w    #1,d6        * d6.w = ループ回数-1
  48.  
  49.     movea.l    _source_ptr(a6),a3    * a3.l = 転送元アドレス
  50.     movea.l    _dest_ptr(a6),a4    * a4.l = 転送先アドレス
  51.  
  52.  
  53. loop:
  54.     bsr    vdisp
  55.  
  56.     move.w    d5,d4        * d5.w =
  57. loop_y2:
  58.     .rept    32
  59.     movem.l    (a3)+,d0-d3/a0-a2/a5
  60.     movem.l    d0-d3/a0-a2/a5,(a4)
  61.     lea.l    32(a4),a4
  62.     .endm
  63.  
  64.     addq.w    #1,d7
  65.     dbra    d4,loop_y2
  66.     dbra    d6,loop
  67.  
  68.  
  69.  
  70. down2_rts:
  71.     moveq.l    #0,d0
  72. down2_rts_2:
  73.     movem.l    (sp)+,d1-d7/a0-a5
  74.     unlk    a6
  75.     rts
  76.  
  77.  
  78. ****    ****
  79. vdisp:
  80.     movem.l    a0,-(sp)
  81.     move.l    _vdisp(a6),a0
  82.     jsr    (a0)
  83.     movem.l    (sp)+,a0
  84.     rts
  85.  
  86.  
  87. ****    ****
  88. down2_err:
  89.     moveq.l    #-1,d0
  90.     bra    down2_rts_2
  91.  
  92.  
  93. ****    ****
  94. down2_ask_speed:
  95.     moveq.l    #SPEED_MAX,d0
  96.     bra    down2_rts_2
  97.  
  98.  
  99. ****    ****
  100. down2_ask_vdisp:
  101.     move.l    _speed(a6),d0
  102.     lea.l    ask_vdisp_table(pc),a0
  103.     add.w    d0,d0
  104.     move.w    (a0,d0.w),d0
  105.     bra    down2_rts_2
  106.  
  107. ask_vdisp_table:
  108.     .dc.w    512,256,128,64,32,16
  109.